﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Aeroporto.bd;
using System.Data;
using System.Collections;
using System.Windows.Forms;

namespace Aeroporto.controle
{
    class TrechoControl
    {
        private TrechoDAO bd_trecho = new TrechoDAO();

        public DataTable lista_dados(string tabela)
        {
            DataTable dataTable = new DataTable();
            try
            {
                dataTable = bd_trecho.lista_dados(tabela);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return dataTable;
        }

        public DataTable pesquisar_siglas(string nome)
        {
            DataTable dataTable = new DataTable();
            try
            {
                dataTable = bd_trecho.pesquisar("trecho", "sigla_comp", nome);
            }
            catch(Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return dataTable;
        }

        public MyMessageBox valida_trecho(string siglaCompanhia, string numVoo, string origemTrecho, string destinoTrecho, string idTrecho, string horarioTrecho)
        {
            if (siglaCompanhia == "" || numVoo == "" || origemTrecho == "" || destinoTrecho == "" || idTrecho == "" || horarioTrecho == "")
            {
                return new MyMessageBox("Preencha todos os campos", "Campo em branco");
            }
            else
            {
                if (bd_trecho.existe_registro("trecho", "id_trecho", idTrecho) == true)
                {
                    return new MyMessageBox("Registro já existe", "Trecho já existe");
                }
                else
                {
                    return null;
                }
            }
        }

        public MyMessageBox valida_insert_trecho(string siglaCompanhia, string numVoo, string origemTrecho, string destinoTrecho, string idTrecho, string horarioTrecho, bool segunda, bool terca, bool quarta, bool quinta, bool sexta, bool sabado, bool domingo)
        {
            MyMessageBox mb = valida_trecho(siglaCompanhia, numVoo, origemTrecho, destinoTrecho, idTrecho, horarioTrecho);
            if (mb != null)
            {
                return mb;
            }
            else
            {
                string t_siglaComp = siglaCompanhia, t_numVoo = numVoo, t_origemTrecho = origemTrecho, t_destinoTrecho = destinoTrecho, t_idTrecho = idTrecho, t_horarioTrecho = horarioTrecho;


                IGenericModel generic_model = new TrechoModel(t_idTrecho, t_siglaComp, t_origemTrecho, t_numVoo, t_horarioTrecho, t_destinoTrecho, segunda, terca, quarta, quinta, sexta, sabado, domingo);

                if (bd_trecho.gravar_dados(generic_model))
                {
                    mb = new MyMessageBox("Trecho cadastrado!", "OK.:");
                }
                else
                {
                    mb = new MyMessageBox("Erro no cadastro!", "Erro");
                }
                return mb;
            }
        }

        public MyMessageBox excluir_trecho(ArrayList idTrechos)
        {
            return bd_trecho.excluir("trecho", "id_trecho", idTrechos);
        }

        public MyMessageBox valida_update_trecho(string siglaCompanhia, string numVoo, string origemTrecho, string destinoTrecho, string idTrecho, string horarioTrecho, string idTrechoAntigo, bool segunda, bool terca, bool quarta, bool quinta, bool sexta, bool sabado, bool domingo)
        {
            if (siglaCompanhia == "" || numVoo == "" || origemTrecho == "" || destinoTrecho == "" || idTrecho == "" || horarioTrecho == "")
            {
                return new MyMessageBox("Preencha todos os campos", "Campo não preenchido");
            }
            else
            {
                if (idTrechoAntigo != idTrecho)
                {
                    return new MyMessageBox("O id não pode ser alterado", "Erro");
                }



                TrechoModel trecho = new TrechoModel(idTrecho, siglaCompanhia, origemTrecho, numVoo, horarioTrecho, destinoTrecho, segunda, terca, quarta, quinta, sexta, sabado, domingo);

                if (bd_trecho.update_dados(trecho))
                {
                    return new MyMessageBox("Companhia atualizada!", "Trecho");
                }
                else
                {
                    return new MyMessageBox("Erro ao atualizar", "Erro");
                }
            }
        }

        public DataTable pesquisar_aeroporto(string aeroporto, string sigla_comp)
        {
            DataTable dataTable = new DataTable();
            //DataTable dataTable2 = new DataTable();
            try
            {
                //dataTable = bd_trecho.pesquisar("trecho", "destino", aeroporto);
                //dataTable2 = bd_trecho.pesquisar("trecho", "origem", aeroporto);                
                //dataTable.Merge(dataTable2, true);
                dataTable = bd_trecho.pesquisar(aeroporto, sigla_comp);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return dataTable;
        }

        internal DataTable lista_trechos()
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_trecho.lista_trechos();

            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;            
        }
    }
}